*****************
*** New files ***
*****************
eco_codes.txt                 contains the eco codes and opening moves, will be included into source file "ecobook.cpp" at compile time
any missing eco code line can simply be added by edit this file later and than recompile the code

ecobook.cpp                   new class that handles the eco book
ecobook.h

*********************
*** Changed files ***
*********************
gromitpocketengine.cpp        create instance of CEcoBook class and calls buildEcoBook(...) to build the opening data
gromitpocketengine.h


****************************
*** get book information ***
****************************
To get eco code information for the current board position call

poEcoBook->getOpening(*poBoard, sOpening /*out*/, sECOCode /*out*/, knownMoves /*out*/, openingMoves /*out*/);

The method getOpening() will return false if no data is found or true if any data for current board position could be retrieved.
Returnd values contain these informations

sOpening        name of the opening that matches actual board position
sECOCode        eco code of the opening that matches actual board position
knownMoves      list of moves that leads to further known eco book positions
openingMoves    list of moves that lead to this eco book position

openingMoves will only be filled for openings which are marked with a "*" at the bginning of the line in eco_codes.txt.
When it is filled it means we currently have a board position that matches a "famous" opening and the moves that lead to this opening could be highlighted.
The name and eco code of the opening are filled in sOpening/sECOCode return value.

Often sOpening and sECOCode will be empty strings although return value of getOpening() is true.
That is no error. It just means that the board position is still part of a known opening line and in knownMoves you can find moves that lead from current position to further positions that are known.
Thus you should still show the user the opening name that was retrieved for a previous move. Only update the opening name if you get any newer.



In grommit engine file:

void CGromitEngine::dom114()
{
GString sOpening;
GString sECOCode;
CGMoveList knownMoves;
CGMoveList openingMoves;

if( poEcoBook->getOpening(*poBoard, sOpening, sECOCode, knownMoves, openingMoves ))
{
    printf("*********** OPENING ************\n");
    printf( "%s\n", sOpening.c_str());
}
}


In header:
void dom114();



In search:
poTheGUI->dom114(); //elsewhere
